package com.hucsmn.landlord;

import java.util.*;

/**
 * 斗地主玩家。
 */
public class Player {
    // 玩家名字。
    private String name;

    // 手牌。
    private final Set<Poker> hand;

    // 底牌。
    private Poker last;

    Player(String name) {
        setName(name);
        hand = new TreeSet<Poker>(Comparator.reverseOrder());
        last = null;
    }

    /**
     * 清除全部的牌。
     */
    public void clear() {
        hand.clear();
        last = null;
    }

    /**
     * 抽手牌。
     *
     * @param card 扑克牌。
     */
    public void add(Poker card) {
        hand.add(card);
    }

    /**
     * 抽底牌。
     *
     * @param card 扑克牌。
     */
    public void addLast(Poker card) {
        last = card;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        if (name == null || name.length() == 0) {
            throw new IllegalArgumentException();
        }
        this.name = name;
    }

    @Override
    public String toString() {
        final StringBuilder sb = new StringBuilder();
        sb.append("玩家 ").append(name);
        sb.append(" 的手牌是：【").append(displayHand());
        sb.append("】，底牌是：").append(last);
        return sb.toString();
    }

    private String displayHand() {
        List<String> strs = new ArrayList<>(hand.size());
        for (Poker card : hand) {
            strs.add(card.toString());
        }
        return String.join(", ", strs);
    }
}
